package com.example.mall.service.impl;

import com.example.mall.mapper.SpPermissionApiMapper;
import com.example.mall.mapper.SpPermissionMapper;
import com.example.mall.mapper.SpRoleMapper;
import com.example.mall.pojo.*;
import com.example.mall.service.SpRoleService;
import lombok.AllArgsConstructor;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
@AllArgsConstructor
public class SpRoleServiceImpl implements SpRoleService {

    SpRoleMapper spRoleMapper;
    SpPermissionMapper spPermissionMapper;
    SpPermissionApiMapper spPermissionApiMapper;


//    @Override
//    public SpRole getSpRoleList() {
//        SpRole spRole=spRoleMapper.selectSpRoleAll();
//        return spRole;
//    }
//
//    @Override
//    public List<SpRole> getSpRoleList1() {
//        List<SpRole> spRoles = spRoleMapper.selectSpRoleAll1();
//        return spRoles;
//    }

    @Override
    public List<SpRole> getSpRoleList1() {
        List<SpRole> spRoles = spRoleMapper.selectSpRoleAll1();
        return spRoles;
    }

    @Override
    public List<SpPermission> getSpRoleList2(Integer psPid) {
        List<SpPermission> spRoles = spRoleMapper.selectSpRoleAll2(psPid);
        return spRoles;
    }

    @Override
    public List<Role> getAllRole() {
//        SpRoleExample example = new SpRoleExample();
        List<Role> roles = spRoleMapper.selectSpRoleAll();
        return roles;
    }

    @Override
    public List<Role1> getROleFirst() {
        List<Role1> role1 = spRoleMapper.selectFirst();
        return role1;
    }

    @Override
    public List<Role2> getROleSecond(Integer psPid) {
        List<Role2> role2 = spRoleMapper.selectSecond(psPid);
        return role2;
    }

    @Override
    public List<Role3> getROleThird(Integer psPid) {
        List<Role3> role3 = spRoleMapper.selectThird(psPid);
        return role3;
    }

    @Override
    public List<SpPermission> getROle3(Integer psId) {
        List<SpPermission> spRoles = spRoleMapper.selectSpRole(psId);
        return spRoles;
    }

    @Override
    public Boolean addRoles(String name, String desc) {
        int i = spRoleMapper.insertRoles(name, desc);
        if(i==1){
            return true;
        }
        return false;
    }

    @Override
    public NewRole1 getRoleById(Integer id) {
        NewRole1 roleById = spRoleMapper.getRoleById(id);
        if(roleById==null){
            return null;
        }
        return roleById;
    }

    @Override
    public Boolean updateRoles(String name, String desc, Integer id) {
        int i = spRoleMapper.updateRoles(name, desc, id);
        if(i==1){
            return true;
        }
        return false;
    }

    @Override
    public Boolean deleteRoles(Integer id) {
        int i = spRoleMapper.deleteRoles(id);
        if(i==1){
            return true;
        }
        return false;
    }
//
//    private List<Menu> getMenus(String[] strIds) {
//        System.out.println("strIds============" + strIds);
//
//        List<Short> ids = new ArrayList<>();
//
//        for (int i = 0; i < strIds.length; i++) {
//            ids.add(Short.parseShort(strIds[i]));
//        }
//        System.out.println("ids==" + ids);
//
//
//        //根据parentId查找
//        List<Menu> menuList = getMenusByParentId(ids, 0);
//
//
//        for (Menu menu1 : menuList) {
//            List<Menu> menuList2 = getMenusByParentId(ids, menu1.getId().intValue());
//            fillMenuPath(menuList2);
//            menu1.setChildren(menuList2);
//        }
//
//        return menuList;
//    }

//    private List<Menu> getMenusByParentId(List<Short> ids, Integer parentId) {
//        获取数据
//        SpPermissionExample example = new SpPermissionExample();
//        SpPermissionExample.Criteria crit = example.createCriteria();
//        crit.andPsPidEqualTo(parentId.shortValue());
//        crit.andPsIdIn(ids);
//        List<SpPermission> permissionList = permissionMapper.selectByExample(example);


//        SpPermission spPermission = new SpPermission();
//        spPermission.equals("ps_pid",parentId);
//        List<SpPermission> spPermissions=spPermissionMapper.selectByParentId(parentId);
//        System.out.println(spPermissions);

        //        //定义接受解析集合
//        List<TreeResultVo>  resultList = new ArrayList();
//        //循环遍历
//        for(int i = 0; i < list.size(); i++){
//            TreeResultVo treeResultVo = new TreeResultVo();
//            treeResultVo .setParentId(list.get(i).getParentId());
//            treeResultVo .setId(list.get(i).getId());
//            treeResultVo .setName(list.get(i).getName());
//            treeResultVo .setRanks(list.get(i).getRanks());
//            resultList.add(treeResultVo );
//        }
//        return createTree("",resultList);

//        List<SpPermission> permissionList = spPermissionMapper.selectByids(ids,parentId);


//        List<SpPermission> permissionList = new ArrayList<>();
//        spPermission.setPs_id(ids);
//        for (int i = 0; i < ids.size(); i++) {
//            SpPermission spPermission = new SpPermission();
//            System.out.println("获取到的ids"+ids.get(i));
//            spPermission.setPs_id(ids.get(i).);
//            spPermission.setPs_id(ids.get(i));
//            permissionList = spPermissionMapper.selectByids(spPermission.getPs_id().shortValue(), parentId);
//            System.out.println("将permission打印" + permissionList.size());
//        }
//        System.out.println(spPermission.getPs_id());


//        List<SpPermission> permissionList = spPermissionMapper.selectByids(ids,parentId);
//
//        List<SpPermission> permissionList=new ArrayList<>();
//        for(int i=0;i<ids.size();i++){
//           permissionList = spPermissionMapper.selectByids(spPermission.getPs_id(),parentId);
//        }







//        //定义接受解析集合
//        List<TreeResultVo>  resultList = new ArrayList();
//        //循环遍历
//        for(int i = 0; i < list.size(); i++){
//            TreeResultVo treeResultVo = new TreeResultVo();
//            treeResultVo .setParentId(list.get(i).getParentId());
//            treeResultVo .setId(list.get(i).getId());
//            treeResultVo .setName(list.get(i).getName());
//            treeResultVo .setRanks(list.get(i).getRanks());
//            resultList.add(treeResultVo );
//        }
//        return createTree("",resultList);

//        List<Menu> menu1List = new ArrayList<>();
//        for (SpPermission perm : permissionList) {
//            Menu menu = new Menu();
//            menu.setId(perm.getPs_id());
//            menu.setAuthName(perm.getPs_name());
//            menu1List.add(menu);
//        }
//        return menu1List;
//    }
//
//    private void fillMenuPath(List<Menu> menuList2) {
//        for (Menu menu : menuList2) {
//            final Short menuId = menu.getId();
////            final SpPermissionApi api = permissionApiMapper.selectByPsId(menuId.intValue());
//            final SpPermissionApi api = spPermissionApiMapper.selectByPsId(menuId.intValue());
//
//            menu.setPath(api.getPs_api_path());
//        }
//    }
}

